home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / KMAGV2.ZIP / READER.PAS < prev    next >
Pascal/Delphi Source File  |  1995-06-02  |  5KB  |  190 lines

  1. {*******************************************************************}
  2. {***  This program made for my mother , to put all her "MTKONS"  ***}
  3. {*******************************************************************}
  4.  
  5. Uses Fcrt,Crt,Heb,Printer;
  6.  
  7. {$I MTKON.INC}
  8.  
  9. Var
  10.     Mtkon: MtkonType;            {The MTKON that we gonna show.}
  11.     Opt:AllAddress;                 {The Main Menu Type.}
  12.     Files:AllF;                     {The Second Menu Type.}
  13.     T,T1:Byte;
  14.     F:File;
  15.     Num:Byte;
  16.  
  17. {* Load The Main menu *}
  18.  
  19. Procedure LoadMain;
  20. Begin
  21.  
  22.     New(Opt);
  23.     Assign(F,'Main.Mnu');
  24.     Reset(F,1);
  25.     BlockRead(F,Opt^,SizeOf(AllAddressP));
  26.     Close(F);
  27.  
  28. End;
  29. {* The Procedure made the first main menu *}
  30.  
  31. Function Menu1 : Byte;
  32. Var
  33.     T,T1:Byte;
  34.     Where:Byte;
  35.     WhereY:Byte;
  36.     Ch:Char;
  37. Begin
  38.     Where:=1;
  39.     WhereY:=1;
  40.     For T:=1 To 80 Do
  41.     Begin
  42.         For T1:=1 To 25 Do
  43.         Begin
  44.             WriteStr(T,T1,'░',1,7);
  45.         End;
  46.     End;
  47.  
  48.     FlipPage(Tscreen1,Tscreen);
  49.     Repeat
  50.         Windows(30,2,80-30,24,15,1,false);
  51.         For T:=Where To Where+20 Do
  52.         Begin
  53.             If T=Opt^.Num Then Break;
  54.             WriteStr(30+10-(length(Opt^.Name[T].Line) Div 2),T+2-Where+1,Opt^.Name[T].Line,15,1);
  55.         End;
  56.         For T:=1 To 19 Do
  57.             WriteStr(T+30,WhereY+2,Tscreen1[WhereY+2,T+30].ch,15,2);
  58.         FlipPage(Tscreen1,Tscreen);
  59.         If KeyPressed Then Ch:=Readkey;
  60.         Case ord(Ch) Of
  61.             72:
  62.             Begin
  63.                 Dec(WhereY);
  64.             End;
  65.             80:
  66.             Begin
  67.                 Inc(WhereY);
  68.             End;
  69.         End;
  70.         If WhereY > 21 Then Begin Dec(WhereY);Inc(Where);End;
  71.         If WhereY < 1 Then Begin Inc(WhereY);Dec(Where);End;
  72.         If WhereY > Opt^.Num -1 Then Begin Dec(WhereY);End;
  73.         If Where < 1 Then Begin Inc(Where);End;
  74.         If (Where > Opt^.Num - 1 - 20) And (Opt^.Num > 20) Then Begin Dec(Where);End;
  75.         if ch<>#13 Then Ch :='1';
  76.     Until(Ch = #13);
  77.     Menu1 := Where + WhereY - 1;
  78. End;
  79. Function Menu2(Num:Byte) : Byte;
  80. Begin
  81.  
  82. End;
  83. {* Show the Mtkon with scroll bars and much more options. *}
  84.  
  85. Procedure ShowWindow(X,Y,X1,Y1:Byte;Mtkon:MtkonType);
  86.  
  87. Var T , T1 : Byte;
  88.     Precent : Word;
  89.     LineY : Integer;
  90.     YPlace : Word;
  91.     Ch:Char;
  92.     XX,YY:Word;
  93. Begin
  94.     LineY := 0;
  95.     Windows(X,Y,X1,Y1,15,1,False);
  96.     WriteStr(((X1 - X) Div 2) - ((Length(Mtkon^.Name)+2) Div 2)+X,Y,' '+Mtkon^.Name+' ',15,1);
  97.     WriteStr(X1,Y+1,'',1,3);
  98.     WriteStr(X1,Y1-1,'',1,3);
  99.     Precent := Y1 - Y - 4;
  100.     For T:=Y+2 to Y1-2 Do
  101.     Begin
  102.         WriteStr(X1,T,'▒',1,3);
  103.     End;
  104.  
  105.     FlipPage(Tscreen1,Tscreen2);
  106.     Ch:=Chr(0);
  107.     Repeat
  108.  
  109.         If (KeyPressed) Then Ch := ReadKey;
  110.         Ch := UpCase(Ch);
  111.         If (ord(Ch)=$10) Then
  112.             Begin
  113.                 Asm
  114.                     Mov Ax,$3
  115.                     Int 10h
  116.                 End;
  117.                 Halt;
  118.             ENd;
  119.         If (ord( Ch)=$19) Then
  120.             Begin
  121.                 For YY:=1 To Mtkon^.Lines Do
  122.                 Begin
  123.                     For XX:=1 To 78 Do
  124.                     Begin
  125.                         Write(Lst,Mtkon^.Mtkon[YY,XX]);
  126.                     End;
  127.                     Writeln(Lst);
  128.                 End;
  129.             ENd;
  130.         Case Ord(Ch) Of
  131.             72:    Dec(LineY);
  132.             80:    Inc(LineY);
  133.             73: LineY := LineY - (Y1 + Y) + 5;
  134.             81: LineY := LineY + (Y1 + Y) - 5;
  135.         End;
  136.  
  137.         YPlace := (Precent * LineY) Div (Mtkon^.Lines - 21);
  138. {        YPlace := 1;
  139.         LineY :=   (Mtkon.Lines * YPlace) Div (Precent)+1;}
  140.         If LineY >= Mtkon^.Lines-21 Then
  141.             LineY := Mtkon^.Lines-21 ;
  142.         If LineY <= 0 Then
  143.             LineY := 0;
  144.         WriteStr(X1,Y + 2 + YPlace,'+',1,3);
  145.         For T:=1 To Y1-Y-1 Do
  146.         Begin
  147.             For T1:=1 To X1-X-1 Do
  148.                 WriteStr(X+T1,Y+T+2-2,Mtkon^.Mtkon[T+LineY,T1],14,1);
  149.         End;
  150.  
  151.         WriteStr(X+10,Y1,' ' +IntToStr(LineY)+ ' ',15,1);
  152.         If GetShiftL Then WriteStr(X,Y1+1,'SHIFTL',0,7);
  153.         If GetShiftR Then WriteStr(X+10,Y1+1,'SHIFTR',0,7);
  154.         If GetCtrl Then WriteStr(X+20,Y1+1,'CTRL',0,7);
  155.         If GetAlt Then WriteStr(X+28,Y1+1,'ALT',0,7);
  156.         If GetSl Then WriteStr(X+35,Y1+1,'SCRLLOCK',0,7);
  157.         If GetNl Then WriteStr(X+47,Y1+1,'NUMLOCK',0,7);
  158.         If GetCl Then WriteStr(X+58,Y1+1,'CAPSLOCK',0,7);
  159.         If (ord(Ch)=$1E) Then
  160.             Begin
  161.                 Windows(10,5,70,17,15,4,True);
  162.                 WriteStr(11,6,'                           ABOUT',15,4);
  163.                 WriteStr(11,7,'                           -----',15,4);
  164.                 WriteStr(11,9,'          The Programming Magazine Reader Ver 1.0  ',15,4);
  165.                 WriteStr(11,10,'                 Made By The I<ing in 1995  ',15,4);
  166.                 WriteStr(11,13,'                 Just for all of u to know. ',15,4);
  167.                 WriteStr(11,14,'             this isn''t a TURBO VISION Program!',15,4);
  168.                  FlipPage(Tscreen1,Tscreen);
  169.                 Ch:=Readkey;
  170.             End;
  171.         FlipPage(Tscreen1,Tscreen);
  172.         FlipPage(Tscreen2,Tscreen1);
  173.         Ch := '~';
  174.     Until(Ch='q');
  175. End;
  176.  
  177. {* MAIN PROGRAM *}
  178. Begin
  179.  
  180. {    Num :=Menu1;
  181.     Num :=Menu2(Num);}
  182.     ClrScr;
  183.     New(Mtkon);
  184.     FillChar(Mtkon^.Mtkon,800*80,0);
  185.     Txt2Mtk(Mtkon,'MagVol3.Txt');
  186.     WriteStr1(1,1,'  ~EA~bout  ~EP~rint  ~EQ~uit                                                            ',0,7);
  187.     WriteStr1(1,25,'                                                                                            ',0,7);
  188.     Mtkon^.Name := 'Programing Magazine Volume 2';
  189.     ShowWindow(1,2,80,24,Mtkon);
  190. End.